import axios from 'axios';
import { Message } from "element-ui";
import router from "../router";

// 响应拦截器
axios.interceptors.response.use(
  (success) => {
    // 业务逻辑错误
    if (success.status && success.status == 200) {
      // 后端返回的json对象data内有code message object
      // 500:业务逻辑错误   401未登录  403权限禁止
      if (
        success.data.code == 500 ||
        success.data.code == 401 ||
        success.data.code == 403 ||
        success.data.code == 400
      ) {
        Message.error({ message: success.data.message });
        return;
      }
      if (success.data.message) {
        Message.success({ message: success.data.message });
      }
      return success.data;
    }
  },
  (error) => {
    if (error.response.code == 504 || error.response.code == 404) {
      Message.error({ message: "服务器不见了( ╯□╰ )" });
    } else if (error.response.code == 403) {
      Message.error({ message: "权限不足，请联系管理员" });
    } else if (error.response.code == 401) {
      Message.error({ message: "尚未登录，请先登录" });
      router.replace("/");
    } else {
      if (error.response.data.message) {
        Message.error({ message: error.data.message });
      } else {
        Message.error({ message: "未知错误" });
      }
    }
    return;
  }
);

// 添加请求拦截器，在请求头中加token
axios.interceptors.request.use(
  config => {
    if (localStorage.getItem('Authorization')) {
      config.headers.Authorization = localStorage.getItem('Authorization');
    }
    return config;
  },
  error => {
    return Promise.reject(error);
  });




// 前置路径
let basr = "";
// 传送json格式的post请求
export const postRequest = (url, params)=>{
  return axios({
    method: 'post',
    url: `${basr}${url}`,
    params: params,
  })
}
// 传送json的put请求
 export const putRequest = (url,params)=>{
   return axios({
     method:'put',
     url:`${basr}${url}`,
     params:params,
   })
 }

 // 传送json的get请求
 export const getRequest = (url,params)=>{
  return axios({
    method:'get',
    url:`${basr}${url}`,
    params:params,
  })
}

// 传送json的delete请求
export const deleteRequest = (url,params)=>{
  return axios({
    method:'delete',
    url:`${basr}${url}`,
    params:params,
  })
}